
[dbo].[asi_ConsecutiveYearsGiving]
CREATE FUNCTION [dbo].[asi_ConsecutiveYearsGiving](@Id varchar(10))
RETURNS int AS
BEGIN
DECLARE @GiftHistory TABLE
(
[GiftYear] int,
[Amount] money
)
DECLARE @StartYear int
DECLARE @EndYear int
DECLARE @C int
DECLARE @Result int
DECLARE @ThisYearAmt money
SET @StartYear = 0
SET @EndYear = 0
SET @Result = 0
SET @ThisYearAmt = 0
SELECT @StartYear = ISNULL( MIN( DATEPART( YYYY, [TransactionDate] ) ), 99),
@EndYear = ISNULL( MAX( DATEPART( YYYY, [TransactionDate] ) ), -1)
FROM [dbo].[vGift]
WHERE [ID] = @Id
SET @C = @StartYear
WHILE @C <= @EndYear
BEGIN
INSERT @GiftHistory( [GiftYear], [Amount]) VALUES ( @C, 0 )
SET @C = @C + 1
END
UPDATE @GiftHistory SET Amount =
(SELECT ISNULL( SUM( [Amount] ), 0)
FROM [dbo].[vGift]
WHERE [ID] = @Id
AND DATEPART( YYYY, [TransactionDate] ) = GiftYear)
SET @C = @StartYear
WHILE @C <= @EndYear
BEGIN
SELECT @ThisYearAmt = Amount
FROM @GiftHistory
WHERE [GiftYear] = @C
IF @ThisYearAmt > 0
BEGIN
SET @Result = @Result + 1
END
IF @ThisYearAmt <= 0
BEGIN
SET @Result = 0
END
SET @C = @C + 1
END
RETURN @Result
END
GO